Complex software applications may include millions of lines of computer code and require teams of engineers and programmers and substantial time (e.g.; years) to create, test and debug. Accordingly, reducing the time and resources dedicated to software development and maintenance time is an increasingly important goal for software engineers and developers.
Over time, a variety of approaches to reducing software development effort have been implemented. Automatic code generation is one conventional approach to reducing the time and resources needed to produce complex programming. Automatic code generation allows a programmer to specify a software program at a high level of abstraction, and based on the information and rules provided by the programmer, a code generation tool produces source code that is intended to provide high level language states directed to the functionality specified by the programmer. While automatic code generation and other conventional productivity enhancement tools may tend to reduce the effort applied to produce a program, relative to lower level programming methods, some degree of programmer direction of the tool is necessary to produce any new program functionality.